1
Pendahuluan Agen Pemecah Masalah
PolyU COMP5511Lecture 2
00:00

Dari Refleks ke Perencanaan

Dalam evolusi desain agen, kita beralih dari Agen Refleks, yang memetakan persepsi langsung ke tindakan berdasarkan aturan sederhana (misalnya, “Jika mobil di depan mengerem, mulai mengerem”), ke Agen Pemecah Masalah. Agen refleks beroperasi berdasarkan konteks langsung, sedangkan agen pemecah masalah bersifat Berbasis Tujuan. Mereka mempertimbangkan konsekuensi masa depan dari tindakan mereka untuk menemukan urutan yang memenuhi tujuan tertentu.

  • Agen Refleks: $Action = Function(Percept)$
  • Agen Perencanaan: $Action\_Sequence = Search(State, Goal)$

Representasi Keadaan Atomik

Pada tingkat fundamental ini, agen menggunakan Representasi Atomik. Ini berarti keadaan dunia diperlakukan sebagai kotak hitam—simpul tunggal tanpa struktur internal yang terlihat oleh algoritma pencarian. Agen hanya bernalar tentang:

  • Keadaan ($S$): Cuplikan lingkungan.
  • Tindakan ($A$): Transisi antar keadaan.
  • Uji Tujuan: Pemeriksaan boolean apakah keadaan $s \in S_{goal}$.

Siklus Pemecahan Masalah

Agen pemecah masalah mengikuti siklus empat langkah yang berbeda untuk menavigasi lingkungan:

  1. Formulasi Tujuan: Menentukan tujuan mana yang akan dikejar berdasarkan situasi saat ini.
  2. Formulasi Masalah: Mengabstraksikan dunia nyata ke dalam model matematika (Keadaan dan Tindakan).
  3. Pencarian: Mensimulasikan urutan tindakan untuk menemukan jalur optimal.
  4. Eksekusi: Melakukan tindakan yang ditemukan selama fase pencarian tanpa pertimbangan lebih lanjut (dengan asumsi lingkungan statis).
Implementasi Python (agent_types.py)
1
class ReflexAgent:
2
defact(self, percept):
3
# Direct mapping: Rule -> Action
4
return rules.get(percept, default_action)
5
6
class ProblemSolvingAgent:
7
def__init__(self):
8
self.seq = [] # Buffered action sequence
9
10
defact(self, percept):
11
# If we are mid-execution, continue
12
ifself.seq:
13
returnself.seq.pop(0)
14
15
# Otherwise, Plan (Search)
16
state = self.update_state(percept)
17
goal = self.formulate_goal(state)
18
problem = self.formulate_problem(state, goal)
19
20
# Search returns a list of actions
21
self.seq = search_algorithm(problem)
22
23
returnself.seq.pop(0)